﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ShadowCommando.Game.Utilites
{
    /// <summary>
    /// Delegacja dla akcjii w TimerAction
    /// </summary>
    public delegate void TimerDelegate();
    /// <summary>
    /// Klasa reprezentująca akcje w timerze
    /// </summary>
  public class TimerAction
    {
        private event TimerDelegate action;
        private int actualTimerCount;
        private int timerCount;
        /// <summary>
        /// Aktualny licznik czasu
        /// </summary>
        public int ActualTimerCount
        {
            get { return actualTimerCount; }
            set { actualTimerCount = value; }
        }
        /// <summary>
        /// Maxymalny stan licznika czasu
        /// </summary>
        public int TimerCount
        {
            get { return timerCount; }
            set { timerCount = value; }
        }
        /// <summary>
        /// Akcja dla timera
        /// </summary>
        public event TimerDelegate Action
        {
            add { action = value; }
            remove { action = value; }

        }
        /// <summary>
        /// Uruchom akcje
        /// </summary>
        public void Tick()
        {
            if(actualTimerCount%timerCount==0)
            {
                action.Invoke();
            }
            actualTimerCount=(actualTimerCount+1)%timerCount;
        }
    }
}
